#ifndef _EB0_GAME_TASK_H_
#define _EB0_GAME_TASK_H_

#include <EB0/Prereq.h>

namespace EB0
{
namespace Tasks
{
	class GameTask
	{
		friend class Managers::TaskManager;

	public:
		GameTask();
		GameTask(void (*repeatedFunc)(float)); // can also just call a function repeatedly
		~GameTask();

	protected:
		virtual void onStart();
		virtual void onStop();
		virtual void updateTask(float dt = 0.0f);

	private:
		void start();
		void stop();
		void update(float dt = 0.0f);

		void (*mRepeatedFunc)(float); // Pointer to a void ____(float) function
		bool mRunning;
	};
} // namespace Tasks
}

#endif // _EB0_GAME_TASK_H_